package pe.cliente.proyecto.core.daobase;

import java.util.Date;
import java.util.List;

import pe.adra.core.dao.DAOUtil;
import pe.adra.core.ext.soporte.SuportEntidad;
import pe.adra.util.exception.DAOException;
import pe.cliente.proyecto.core.daobase.impl.AsientoDAOBaseImpl.AsientoDAOBaseUtil;
import pe.cliente.proyecto.dominio.Asiento;

public interface AsientoDAOBase {

	public static final String STR_ENTIDAD = "Asiento";
	public static final String CAMPO_ID = "id";
	public static final String CAMPO_NUMERO = "numero";
	public static final String CAMPO_TRIBUNA = "tribuna";
	public static final String ESTADIO_CAMPO_ESTADIO = "estadio";
	public static final String CAMPO_ACTIVO = "activo";
	public static final String CAMPO_CODIGOUSUARIO = "codigoUsuario";
	public static final String CAMPO_FECHAREGISTRO = "fechaRegistro";
	public static final String CAMPO_CODIGOUSUARIOACTULIZAR = "codigoUsuarioActulizar";
	public static final String CAMPO_FECHAACTUALIZADA = "fechaActualizada";

	public static final String SQL_QUERY = DAOUtil.SQL_SELECT + DAOUtil.SQL_SE + DAOUtil.SQL_FROM + STR_ENTIDAD + DAOUtil.SQL_SE;
	public static final String SQL_QUERY_COUNT = DAOUtil.SQL_SELECT + DAOUtil.SQL_COUNT + "(" + DAOUtil.SQL_SE + ")" + DAOUtil.SQL_FROM + STR_ENTIDAD + DAOUtil.SQL_SE;
	public static final String SQL_QUERY_ID = DAOUtil.SQL_SELECT + " new " + STR_ENTIDAD + " ( " + DAOUtil.SQL_SEA + CAMPO_ID + " ) " + DAOUtil.SQL_FROM + STR_ENTIDAD + DAOUtil.SQL_SE;
	public static final String SQL_QUERY_ID_NUMERO = DAOUtil.SQL_SELECT + " new " + STR_ENTIDAD + " ( " + DAOUtil.SQL_SEA + CAMPO_ID + "," + DAOUtil.SQL_SEA + CAMPO_NUMERO + " ) " + DAOUtil.SQL_FROM + STR_ENTIDAD + DAOUtil.SQL_SE;

	public static final String SQL_QUERY_CBO = DAOUtil.SQL_SELECT + DAOUtil.SQL_SEA + CAMPO_ID + "," + DAOUtil.SQL_SEA + CAMPO_NUMERO + DAOUtil.SQL_FROM + STR_ENTIDAD + DAOUtil.SQL_SE;

	public int countListaAsiento(Asiento filtro) throws DAOException;

	public int countListaAsiento(Asiento filtro, Date finit, Date ffin) throws DAOException;

	public List<Asiento> getListaAsiento(Asiento filtro, int inicio, int fin, String strSort, String strOrder, SuportEntidad... innerjoin) throws DAOException;

	public List<Asiento> getListaAsiento(Asiento filtro, Date finit, Date ffin, int inicio, int fin, String strSort, String strOrder, SuportEntidad... innerjoin) throws DAOException;

	public List<Asiento> getAsientoPorId(Asiento filtro, int inicio, int fin, String strSort, String strOrder, SuportEntidad... innerjoin) throws DAOException;

	public List<Asiento> getAsientoPorIdPorNumero(Asiento filtro, int inicio, int fin, String strSort, String strOrder, SuportEntidad... innerjoin) throws DAOException;

	public List<Asiento> getAsientoPorId(Asiento filtro, Date finit, Date ffin, int inicio, int fin, String strSort, String strOrder, SuportEntidad... innerjoin) throws DAOException;

	public List<Asiento> getAsientoPorIdPorNumero(Asiento filtro, Date finit, Date ffin, int inicio, int fin, String strSort, String strOrder, SuportEntidad... innerjoin) throws DAOException;

	public List<Asiento> getCboAsiento() throws DAOException;

	public List<Asiento> getCboAsiento(Asiento filtro) throws DAOException;

	public List<Asiento> getAsientoPorID(Integer[] ids, String tipo, SuportEntidad innerjoin) throws DAOException;

	public AsientoDAOBaseUtil setQuery();

}
